#include <iostream>
#include <thread>
#include <unistd.h>
#include <mutex>
using namespace std;

// 定义锁
mutex mymutex;

// 定义全局变量
int num = 0; // 目前商品总的库存数量

void task1()
{
    while (1)
    {
        // 上锁
        mymutex.lock();
        num++;
        cout << "生产部门生产了产品，库存数量是: " << num << endl;
        sleep(1);
        // 解锁
        mymutex.unlock();
        usleep(2000); // 不要自己刚解锁，立马自己上锁
    }
}

// 线程2--》销售部门
void task2()
{
    while (1)
    {
        // 上锁
        mymutex.lock();
        num--;
        cout << "销售部门销售了产品，库存数量是: " << num << endl;
        sleep(1);
        // 解锁
        mymutex.unlock();
        usleep(2000);
    }
}

int main()
{

    thread t1(task1);
    sleep(1);
    thread t2(task2);

    t1.join(); // 等待线程1结束
    t2.join(); // 等待线程2结束

    return 0;
}